A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets. The packets are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
To route the packets through the computer network, each network device may be allocated an address that uniquely identifies each of network devices within a particular portion of and, possibly globally within, the computer network. Each packet may then include a source address uniquely identifying the network device that originated the packet and a destination address uniquely identifying the network device to which the packet is destined. Intermediate devices, referred to as routers, may route the packets to the destination device based on the destination address included within the packet.
These network addresses typically comprise layer 3 (L3) or network layer addresses, such as an Internet protocol (IP) address. Two different version of IP are typically employed in the computer network for L3 routing purposes. A first version of IP, referred to as IP version 4 (IPv4), is widely deployed in most packet-based computer networks. IPv4 however has a limited address space, which may limit the ability to assign global addresses as more and more network devices join the computer network. Various techniques to overcome this address space limitation increase computer network complexity and thereby increase administrative costs. A more recent version IP, referred to as IP version 6 (IPv6), expands the address space to overcome the address space limitations of IPv4 while also improving various other limitations of IPv4.
IPv6 provides for two mechanisms by which to allocate addresses to network devices and, more specifically, so-called “hosts” in terms of IPv6. According to IPv6, the term “hosts” denote any type of network device except for routers. IPv6 provides a first form of address allocation referred to as “stateless address auto-configuration.” Using stateless address auto-configuration, a host may determine an address for use within at least a portion of the computer network, e.g., a sub-network (which is often referred to as a “subnet”). IPv6 also provides a second form of address allocation referred to as “stateful address configuration,” which is better known by the protocol that enables this stateful address configuration, dynamic host configuration protocol version 6 (DHCPv6).
While two different address assignment or configuration mechanisms provides flexibility to address various network configurations, often such flexibility leads to complications and inefficiencies when administering large computer networks. For example, service provider networks that facilitate access to a public computer network, such as the Internet, typically support both stateless address auto-configuration and DHCPv6 that both enable allocation of addresses, or a set of addresses denoted by an address prefix, to network devices within a given subscriber's network. To support both address allocation mechanisms, the service provider provisions two address prefixes for each subscriber, reserving one for stateless address auto-configuration and another for DHCPv6. Depending on the topology of the subscriber's network, however, the network devices of a given subscriber network may only require one of these provisioned prefixes, thereby resulting in inefficient use of address prefixes.